package org.summerframework.core.jackson;

import org.summerframework.core.base.service.BaseService;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * 根据当前字段查询
 * <p>
 * {@link BaseService#selectById(Long)}
 *
 * @author 石超
 * @version v1.0.0
 */
@Retention(RetentionPolicy.RUNTIME)
public @interface SelectById {
    /**
     * @return bean
     */
    Class beanClass() default Void.class;

    String beanName() default "";

    /**
     * @return 方法名称
     */
    String method() default "selectById";

    /**
     * 默认去除Id加上{@link #fieldName()}首字母大写,Vo展现的名称
     *
     * @return json的名称
     */
    String name() default "";

    /**
     * 返回方法对象中字段名称。数据库查询结果集需要用到的字段
     *
     * @return 字段名称
     */
    String fieldName() default "name";

    /**
     * @return 非空字符串, 如果空字符返回为null
     */
    String defaultValue() default "";


    SelectByIdName[] names() default {};

    @interface SelectByIdName {

        /**
         * 默认去除Id加上{@link #fieldName()}首字母大写
         *
         * @return json的名称
         */
        String name() default "";

        /**
         * 返回方法对象中字段名称
         *
         * @return 字段名称
         */
        String fieldName() default "name";

        /**
         * @return 非空字符串, 如果空字符返回为null
         */
        String defaultValue() default "";
    }

}
